{\rtf1\ansi\ansicpg1252\uc1\deff0
{\fonttbl{\f0\fmodern\fcharset0\fprq2 RobotoMono-SemiBold;}}
{\colortbl;\red0\green0\blue0;\red255\green255\blue255;\red128\green128\blue128;}
\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\f0\fs22\cf0
\pard\plain \tx0\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2880\tx3600\tx4320\ltrch\loch {\f0\fs22\b0\i0 The ideas of synchronous programming are sound and made sense at the time, and the languages that grew from the initial research (Esterel, Lustre, Signal) are totally reasonable and not too painful to understand.}
\par\plain \f0\fs22\b0\i0
\par\plain {\f0\fs22\b0\i0 However, if you look at their uptake in the software industry they didn\loch\af0\hich\af0\dbch\af0\uc1\u8217\'92t really catch on. Github contains a total of 4 repos that are tagged with \u8220\'93Esterel\u8221\'94, two of which are forks of the Columbia Esterel Compiler. StateCharts has 57 tagged repos, most related to the \u8220\'93XState\u8221\'94 Javascript state machine library.}
\par\plain \f0\fs22\b0\i0
\par\plain {\f0\fs22\b0\i0 [defunct site list]}
\par\plain \f0\fs22\b0\i0
\par\plain {\f0\fs22\b0\i0 \loch\af0\hich\af0\dbch\af0\uc1\u8220\'93When X happens, do Y\u8221\'94.}
\par\plain \f0\fs22\b0\i0
\par\plain {\f0\fs22\b0\i0 I think part of the reason that SP didn't become more popular is that the initial research focused too tightly on _how_ to do SP (in the form of new languages with new and somewhat unfamiliar semantics), at the expense of defining clearly _what_ synchronous programming is. That in turn created the impression that SP is something you can only do in synchronous programming languages, which is not at all correct - you can apply the \loch\af0\hich\af0\dbch\af0\uc1\u8220\'93synchronous abstraction\u8221\'94 to code written in any language, much as you can do functional programming in any language - it might be limited and awkward, but it doesn\u8217\'92t require completely replacing your current dev environment. If you've ever written a state machine or dealt with any sort of atomic transactions, then you've already done some form of synchronous programming even if you didn't know the name for it at the time.}}